# Molecule managed

require 'rake'
require 'rspec/core/rake_task'
require 'yaml'
require 'fileutils'

task spec: 'serverspec:all'
task default: :spec

hosts = YAML.load_file('{{ cookiecutter.rakefile_state_file }}')['hosts']

namespace :serverspec do
  task all: hosts.keys
  hosts.each do |name, host|
    desc "Run serverspec on #{name}"
    pattern = ['{{ cookiecutter.rakefile_serverspec_dir }}/*_spec.rb', "{{ cookiecutter.rakefile_serverspec_dir }}/#{name}/*_spec.rb", "{{ cookiecutter.rakefile_serverspec_dir }}/hosts/#{name}/*_spec.rb"]

    host['groups'].each do |group|
      pattern << "{{ cookiecutter.rakefile_serverspec_dir }}/#{group}/*_spec.rb"
      pattern << "{{ cookiecutter.rakefile_serverspec_dir }}/groups/#{group}/*_spec.rb"
    end

    RSpec::Core::RakeTask.new(name.to_sym) do |target|
      puts "*** Run serverspec on #{name} ***"
      ENV['TARGET_HOST'] = name
      target.pattern = pattern.join(',')
    end
  end
end
